package com.baizhi.service;

import com.baizhi.dto.response.StudentScoreDTO;
import com.baizhi.entity.Course;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Optional;

/**
* @author 16357
* @description 针对表【t_course】的数据库操作Service
* @createDate 2024-08-14 10:13:27
*/
public interface CourseService extends IService<Course> {

    /**
     * 根据课程ID查询成信息
     * @param pkCid 可成ID
     * @return Optional是Java8引入的一个容器类，为了避免显示空值检查的
     */
    Optional<Course> findById(Integer pkCid);

    /**
     * 修改课程信息
     * @param course 包含课程ID和需要修改的信息
     * @return 成功-1  失败-0
     */
    Integer update(Course course);

    /**
     * 根据学生的用户ID查询学生成绩
     * @param userId 用户ID
     * @return 封装学生成绩列表，包括成绩，课程名，课程ID的信息
     */
    List<StudentScoreDTO> queryScoreByUserIdAndCourseId(Integer userId);

    /**
     * 根据学生的用户ID和课程ID删除 我的课程
     * @param userId 学生的用户ID
     * @param courseId 学生的课程ID
     * @return 成功1   失败0
     */
    Integer deleteMyCourseByUserIdAndCourseId(Integer userId,Integer courseId);

    /**
     * 根据userId 获取我的课程信息
     * @param userId 用户ID
     * @return 所选课程列表
     */
    List<Course> getCoursesByUserId(Integer userId);

    /**
     * 学生选课功能
     * @param userId 用户ID
     * @param courseId 课程ID
     * @return 成功-1   失败-0
     */
    Integer addCourse(Integer userId,Integer courseId);

}
